﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Facade.Interface;
using Crosland.Automotriz.Facade.Facade;
using Crosland.Automotriz.Seguridad.ControlExeption;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Logic.Linq;
using System.Configuration;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;

namespace Crosland.Automotriz.Web.Canibalizacion
{
    public partial class wFrmCanibalizacionMovimientoActualizar : System.Web.UI.Page
    {
        private int intIdNegocio = Convert.ToInt32(ConfigurationManager.AppSettings["Negocio"]);
        private iFacadeCanibalizacion facadeCanibalizacion = null;
        private static List<Struct_T_LOG_CANIBALIZACION_MOV_DET> listaCanibalizacionMovDet = null;
        private static int id_log_canib_mov_cab = 0;
        protected void Page_Load(object sender, EventArgs e)
        {

            if (Page.IsPostBack == false)
            {

                listaCanibalizacionMovDet = new List<Struct_T_LOG_CANIBALIZACION_MOV_DET>();
                this.ListarTipoMovimiento();
                this.ListarTecnico();
                this.CargarDatosOperacion();


                Panel img = (Panel)Master.FindControl("asp");
                img.Visible = false;
                Panel img2 = (Panel)Master.FindControl("pnlTop");
                img2.Visible = false;

            }

        }



        private void ListarTecnico() {

            facadeCanibalizacion = new FacadeCanibalizacion();

            cboTecnico.DataSource = facadeCanibalizacion.ListaTecnico();
            cboTecnico.TextField = "DES_CORTA";
            cboTecnico.ValueField = "ID_GENERAL_DET";
            cboTecnico.DataBind();

        
        }

        private void CargarDatosOperacion()
        {
            try
            {
                facadeCanibalizacion = new FacadeCanibalizacion();
                String strOperacion = Session["operacion"].ToString();
                if (strOperacion.ToUpper() == "M")
                {
                    btnBuscarMoto.Enabled = false;
                    txtMotoCanibalizar.Enabled = false;

                    T_LOG_CANIBALIZACION_MOVIMIENTO_CAB lista = facadeCanibalizacion.ListarPorIdCab(Convert.ToInt32(Session["idCab"]));
                    lblIDLogCanibalizacionCab.Text = lista.ID_LOG_CANIBALIZACION_CAB.ToString();
                    cboTipoMovimiento.Value = lista.TIPO_MOVIMIENTO.ToString();
                    cboTecnico.Value = lista.ID_TECNICO.ToString();
                    deFechaCanibalizacion.Date = lista.FECHA_CANIBALIZACION.Value;
                    txtObservacion.Text = lista.DESCRIPCION.ToString();
                    id_log_canib_mov_cab = lista.ID_LOG_CANIB_MOV_CAB;
                    List<T_LOG_CANIBALIZACION_CAB_EN> lisCab = facadeCanibalizacion.ListarCanibalizacionPorIdCab(int.Parse(lblIDLogCanibalizacionCab.Text));
                    txtMotoCanibalizar.Text = lisCab[0].NRO_LOTE.ToString();
                    txtColor.Text = lisCab[0].DES_COLOR.ToString();
                    txtChasis.Text = lisCab[0].VIN.ToString();
                    txtAnioModelo.Text = lisCab[0].ANIO_MODELO.ToString();
                    txtModelo.Text = lisCab[0].DES_MODELO == null ? String.Empty : lisCab[0].DES_MODELO.ToString();
                    txtAnioFabricacion.Text = lisCab[0].ANIO_FABRICACION.ToString();
                    txtMotor.Text = lisCab[0].NRO_MOTOR.ToString();
                    Struct_T_LOG_CANIBALIZACION_MOV_DET struDet = new Struct_T_LOG_CANIBALIZACION_MOV_DET();
                    foreach (var item in facadeCanibalizacion.ListaPorIdMovCab(Convert.ToInt32(Session["idCab"])))
                    {
                        struDet.CANT_STOCK = item.CANT_STOCK;
                        struDet.CANT_TRANSITO = item.CANT_TRANSITO;
                        struDet.CANTIDAD = item.CANTIDAD;
                        struDet.COD_MATERIAL = item.COD_MATERIAL;
                        struDet.DES_MATERIAL = item.DES_MATERIAL;
                        struDet.ID_MATERIAL = item.ID_MATERIAL;
                        struDet.ID_LOG_CANIB_MOV_CAB = item.ID_LOG_CANIB_MOV_CAB;
                        struDet.OBSERVACION = item.OBSERVACION;
                        struDet.CUP_D = item.CUP_D.Value;
                        struDet.CUP_S = item.CUP_S.Value;
                        struDet.FOB = item.FOB.Value;
                        listaCanibalizacionMovDet.Add(struDet);
                    }

                    grdCanibalizacionMovDet.DataSource = listaCanibalizacionMovDet;
                    grdCanibalizacionMovDet.DataBind();

                }
                else if (strOperacion.ToUpper() == "C")
                {
                    deFechaCanibalizacion.Date = DateTime.Now;
                    cboTipoMovimiento.SelectedIndex = 0;
                    cboTecnico.SelectedIndex = 0;
                }
            }
            catch (Exception ex)
            {

                GuardarExceptionLog(ex.Message, ex, "CargarDatosOperacion");
                MensajesError(ex.Message, ex, "CargarDatosOperacion");
            }

        }

        private void ListarTipoMovimiento()
        {
            facadeCanibalizacion = new FacadeCanibalizacion();
            cboTipoMovimiento.DataSource = facadeCanibalizacion.ListaTipoMovimiento();
            cboTipoMovimiento.TextField = "DES_CORTA";
            cboTipoMovimiento.ValueField = "ID_GENERAL_DET";
            cboTipoMovimiento.DataBind();


        }

        private void ListaMaterialMovimientoSalida()
        {
            try
            {
                facadeCanibalizacion = new FacadeCanibalizacion();
                String strFiltro = txtPopBuscar.Text;
                int intTotalRegistros = Convert.ToInt32(cboOpcion.Value);

                IEnumerable<Object> listaMaterial = facadeCanibalizacion.ListaMaterialStock_mas_Transito(strFiltro, intTotalRegistros);
                if (listaMaterial.Count() == 0 || listaMaterial==null) {
                    grdMaterial.DataSource = null;
                    grdMaterial.DataBind();
                    lblmsj.Text = "El Material no existe en maestro de materiales ! ";
                    popupmsj.ShowOnPageLoad = true;
                    return;
                }

                grdMaterial.DataSource = listaMaterial;
                grdMaterial.DataBind();
            }
            catch (RunException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "ListaMaterial");
                MensajesError(ex.Message, ex, "ListaMaterial");
            }
            catch (Exception ex)
            {
                GuardarExceptionLog(ex.Message, ex, "ListaMaterial");
                MensajesError(ex.Message, ex, "ListaMaterial");
            }
        }

        private void ListaMaterialMovimientoEntrada()
        {

            try
            {
                grdCanibalizacionMovEntrada.Selection.UnselectAll();
                facadeCanibalizacion = new FacadeCanibalizacion();
                int intIdLogCanibalizacionCab = int.Parse(lblIDLogCanibalizacionCab.Text);
                int intIdOrgVta = 2;
                int intTotalRegistro = 500;
                grdCanibalizacionMovEntrada.DataSource = facadeCanibalizacion.ListaMaterialesMovimientoEntrada(intIdLogCanibalizacionCab, intIdOrgVta, intTotalRegistro);
                grdCanibalizacionMovEntrada.DataBind();
            }
            catch (RunException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "ListaMaterialMovimientoEntrada");
                MensajesError(ex.Message, ex, "ListaMaterialMovimientoEntrada");
            }
            catch (Exception ex)
            {
                GuardarExceptionLog(ex.Message, ex, "ListaMaterialMovimientoEntrada");
                MensajesError(ex.Message, ex, "ListaMaterialMovimientoEntrada");
            }



        }


        private bool ValidarDuplicados(ASPxGridView GridID)
        {
            int intIndex = GridID.FocusedRowIndex;
            int intIdMaterial = Convert.ToInt32(GridID.GetRowValues(intIndex, "ID_MATERIAL"));
            for (int i = 0; i < grdCanibalizacionMovDet.VisibleRowCount; i++)
            {
                int intIdMaterialVerificado = Convert.ToInt32(grdCanibalizacionMovDet.GetRowValues(i, "ID_MATERIAL"));
                if (intIdMaterial == intIdMaterialVerificado)
                {

                    return true;
                }
            }
            return false;
        }

        private void AgregarMateriales()
        {

            if (ValidarDuplicados(grdMaterial))
            {
                lblmsj.Text = "El Material ya esta agregado por favor agregar otro ";
                popupmsj.ShowOnPageLoad = true;
                return;
            }


            Struct_T_LOG_CANIBALIZACION_MOV_DET canibalizacion = new Struct_T_LOG_CANIBALIZACION_MOV_DET();
            int intIndex = grdMaterial.FocusedRowIndex;
            int intIdMaterial = Convert.ToInt32(grdMaterial.GetRowValues(intIndex, "ID_MATERIAL"));
            String strCodMaterial = grdMaterial.GetRowValues(intIndex, "COD_MATERIAL").ToString();
            String striDesMaterial = grdMaterial.GetRowValues(intIndex, "DES_MATERIAL").ToString();
            int intCantStock = Convert.ToInt32(grdMaterial.GetRowValues(intIndex, "STOCK_ACTUAL"));
            int intCantTransito = Convert.ToInt32(grdMaterial.GetRowValues(intIndex, "CANT_TRANSITO"));
            ASPxTextBox txtFob = (ASPxTextBox)grdMaterial.FindRowCellTemplateControl(intIndex, null, "txtFob");
            ASPxTextBox txtcup_d = (ASPxTextBox)grdMaterial.FindRowCellTemplateControl(intIndex, null, "txtcup_d");
            ASPxTextBox txtcup_s = (ASPxTextBox)grdMaterial.FindRowCellTemplateControl(intIndex, null, "txtcup_s");
            Decimal dcmFOB = Convert.ToDecimal(txtFob.Text);
            decimal dcmCup_d = Convert.ToDecimal(txtcup_d.Text);
            decimal dcmCup_s = Convert.ToDecimal(txtcup_s.Text);
            int intCantidad = Convert.ToInt32(1);
            canibalizacion.ID_MATERIAL = intIdMaterial;
            canibalizacion.COD_MATERIAL = strCodMaterial;
            canibalizacion.DES_MATERIAL = striDesMaterial;
            canibalizacion.CANT_STOCK = intCantStock;
            canibalizacion.CANT_TRANSITO = intCantTransito;
            canibalizacion.CANTIDAD = intCantidad;
            canibalizacion.FOB = dcmFOB;

            canibalizacion.CUP_S = dcmCup_s;
            canibalizacion.CUP_D = dcmCup_d;
            canibalizacion.OBSERVACION = "";
            listaCanibalizacionMovDet.Add(canibalizacion);
            grdCanibalizacionMovDet.DataSource = listaCanibalizacionMovDet;
            grdCanibalizacionMovDet.DataBind();

            pcMaterial.ShowOnPageLoad = false;


        }

        private struct Struct_T_LOG_CANIBALIZACION_MOV_DET
        {
            public int ID_LOG_CANIB_MOV_CAB { get; set; }
            public int ID_MATERIAL { get; set; }
            public string COD_MATERIAL { get; set; }
            public string DES_MATERIAL { get; set; }
            public int CANTIDAD { get; set; }
            public int CANT_STOCK { get; set; }
            public int CANT_TRANSITO { get; set; }
            public String OBSERVACION { get; set; }
            public decimal CUP_S { get; set; }
            public decimal CUP_D { get; set; }
            public decimal FOB { get; set; }

        }

        private bool Validar()
        {

            bool val = false;

            if (cboTipoMovimiento.Value == null)
            {

                val = true;
                lblmsj.Text = "Seleccione tipo movimiento";
                popupmsj.ShowOnPageLoad = true;

            }
            else if (lblIDLogCanibalizacionCab.Text == String.Empty)
            {
                val = true;
                lblmsj.Text = "Seleccionar moto a canibalizar";
                popupmsj.ShowOnPageLoad = true;
            }
            return val;
        }

        private void LimpiarControles()
        {
            lblIDLogCanibalizacionCab.Text = String.Empty;
            txtMotoCanibalizar.Text = String.Empty;
            txtObservacion.Text = String.Empty;
            deFechaCanibalizacion.Date = DateTime.Now;
            listaCanibalizacionMovDet.Clear();
            grdCanibalizacionMovDet.DataSource = null;
            grdCanibalizacionMovDet.DataBind();

        }


        private void Redireccionar(String strMsg, Boolean boolGrabacion, String vOperacion)
        {
            Session["strMsg"] = strMsg;
            Session["boolGrabacion"] = boolGrabacion;
            Session["vOperacion"] = vOperacion;
            Response.Redirect("~/Canibalizacion/wFrmCanibalizacionMovimiento.aspx?id=" + intIdNegocio, false);
        }

        private void Grabar()
        {

            try
            {

                Boolean blResultadoCab = false;
                Boolean blResultadoDet = false;
                int intCanibalizacionCab = 0;
                String strOperacion = Session["Operacion"].ToString();
                facadeCanibalizacion = new FacadeCanibalizacion();
                T_LOG_CANIBALIZACION_MOVIMIENTO_CAB canibalizacioncab = new T_LOG_CANIBALIZACION_MOVIMIENTO_CAB();
                canibalizacioncab.ID_LOG_CANIBALIZACION_CAB = Convert.ToInt32(lblIDLogCanibalizacionCab.Text);
                canibalizacioncab.TIPO_MOVIMIENTO = Convert.ToInt32(cboTipoMovimiento.Value);
                canibalizacioncab.USUARIO = Session["User"].ToString();
                canibalizacioncab.FECHA_CANIBALIZACION = deFechaCanibalizacion.Date;
                canibalizacioncab.DESCRIPCION = txtObservacion.Text;
                canibalizacioncab.ID_LOG_CANIB_MOV_CAB = id_log_canib_mov_cab;
                canibalizacioncab.ES_ANULADO = strOperacion == "C" ? short.Parse("0") : short.Parse(Session["ES_ANULADO"].ToString());
                canibalizacioncab.ID_TECNICO = cboTecnico.Value == null ? 0 : Convert.ToInt32(cboTecnico.Value);
                blResultadoCab = strOperacion == "C" ? facadeCanibalizacion.InsertarT_LOG_CANIBALIZACION_MOVIMIENTO_CAB(canibalizacioncab) : facadeCanibalizacion.ModificarT_LOG_CANIBALIZACION_MOVIMIENTO_CAB(canibalizacioncab);

                if (blResultadoCab)
                {

                    bool blResul = strOperacion == "M" ? facadeCanibalizacion.eliminaT_LOG_CANIBALIZACION_MOV_DET(id_log_canib_mov_cab) : false;

                    intCanibalizacionCab = facadeCanibalizacion.UltimoGenerado() == 1 ? 0 : facadeCanibalizacion.UltimoGenerado();
                    for (int i = 0; i < grdCanibalizacionMovDet.VisibleRowCount; i++)
                    {
                        T_LOG_CANIBALIZACION_MOV_DET canibalizaciondet = new T_LOG_CANIBALIZACION_MOV_DET();
                        ASPxTextBox cantidad = (ASPxTextBox)grdCanibalizacionMovDet.FindRowCellTemplateControl(i, null, "ASPxTextBox1");
                        ASPxMemo Observacion = (ASPxMemo)grdCanibalizacionMovDet.FindRowCellTemplateControl(i, null, "txtComentarioArticulo");

                        Decimal? fob = Convert.ToDecimal(grdCanibalizacionMovDet.GetRowValues(i, "FOB"));
                        Decimal? cup_d = Convert.ToDecimal(grdCanibalizacionMovDet.GetRowValues(i, "CUP_D"));
                        Decimal? cup_s = Convert.ToDecimal(grdCanibalizacionMovDet.GetRowValues(i, "CUP_S"));

                        canibalizaciondet.ID_LOG_CANIB_MOV_CAB = strOperacion == "C" ? intCanibalizacionCab : id_log_canib_mov_cab;
                        canibalizaciondet.ID_MATERIAL = Convert.ToInt32(grdCanibalizacionMovDet.GetRowValues(i, "ID_MATERIAL"));
                        canibalizaciondet.CANTIDAD = Convert.ToInt32(cantidad.Text);
                        canibalizaciondet.CANT_STOCK = Convert.ToInt32(grdCanibalizacionMovDet.GetRowValues(i, "CANT_STOCK"));
                        canibalizaciondet.CANT_TRANSITO = Convert.ToInt32(grdCanibalizacionMovDet.GetRowValues(i, "CANT_TRANSITO"));
                        canibalizaciondet.OBSERVACION = Observacion.Text;
                        canibalizaciondet.FOB = fob;
                        canibalizaciondet.CUP_D = cup_d;
                        canibalizaciondet.CUP_S = cup_s;
                        blResultadoDet = facadeCanibalizacion.InsertarT_LOG_CANIBALIZACION_MOV_DET(canibalizaciondet);

                    }

                    int idLogCanibalizacionCab = int.Parse(lblIDLogCanibalizacionCab.Text);

                    DateTime? fecha_canibalizacion = facadeCanibalizacion.fecha_canibalizacion(idLogCanibalizacionCab);
                    facadeCanibalizacion.ActualizarFechaCanibalizacion(idLogCanibalizacionCab, fecha_canibalizacion);
                    int Total_Saldo = facadeCanibalizacion.Total_Saldo(idLogCanibalizacionCab);
                    if (Total_Saldo == 0)
                    {
                        DateTime? fecha_armado = DateTime.Now;//facadeCanibalizacion.fecha_armado(idLogCanibalizacionCab);
                        facadeCanibalizacion.ActualizarFechaArmado(idLogCanibalizacionCab, fecha_armado);
                        facadeCanibalizacion.ActualizaEstadoArmado(154,idLogCanibalizacionCab);//Estado Armado: ARMADO


                    }
                    else
                    {
                        facadeCanibalizacion.ActualizarFechaArmado(idLogCanibalizacionCab, null);
                    }

                }
                if (blResultadoCab || blResultadoDet)
                {


                    this.LimpiarControles();
                    String mensaje = strOperacion == "C" ? "Se registró correctamente" : "Se actualizó correctamente";
                    Redireccionar(mensaje, true, strOperacion);

                }
            }


            catch (Exception ex)
            {
                GuardarExceptionLog(ex.Message, ex, "Grabar");
                MensajesError(ex.Message, ex, "Grabar");
            }
        }

        private void ListarMotosCanibalizar()
        {
            try
            {
                facadeCanibalizacion = new FacadeCanibalizacion();
                String strNroChasis = txtPopNroLote.Text;
                grdListadoVehiculos.DataSource = facadeCanibalizacion.ListarPendientes(strNroChasis);
                grdListadoVehiculos.DataBind();
            }
            catch (Exception ex)
            {
                GuardarExceptionLog(ex.Message, ex, "ListarMotosCanibalizar");
                MensajesError(ex.Message, ex, "ListarMotosCanibalizar");
            }
        }

        private void AgregaSeleccionMoto()
        {

            try
            {
                int intIndex = grdListadoVehiculos.FocusedRowIndex;
                if (intIndex == -1)
                {
                    lblmsj.Text = "Seleccione un registro";
                    popupmsj.ShowOnPageLoad = true;
                    return;
                }
                txtMotoCanibalizar.Text = grdListadoVehiculos.GetRowValues(intIndex, "NRO_LOTE") == null ? String.Empty : grdListadoVehiculos.GetRowValues(intIndex, "NRO_LOTE").ToString();
                lblIDLogCanibalizacionCab.Text = grdListadoVehiculos.GetRowValues(intIndex, "ID_LOG_CANIBALIZACION_CAB") == null ? String.Empty : grdListadoVehiculos.GetRowValues(intIndex, "ID_LOG_CANIBALIZACION_CAB").ToString();
                txtModelo.Text = grdListadoVehiculos.GetRowValues(intIndex, "DES_MODELO") == null ? String.Empty : grdListadoVehiculos.GetRowValues(intIndex, "DES_MODELO").ToString();
                txtColor.Text = grdListadoVehiculos.GetRowValues(intIndex, "DES_COLOR") == null ? String.Empty : grdListadoVehiculos.GetRowValues(intIndex, "DES_COLOR").ToString();
                txtAnioModelo.Text = grdListadoVehiculos.GetRowValues(intIndex, "ANIO_MODELO") == null ? String.Empty : grdListadoVehiculos.GetRowValues(intIndex, "ANIO_MODELO").ToString();
                txtChasis.Text = grdListadoVehiculos.GetRowValues(intIndex, "VIN") == null ? String.Empty : grdListadoVehiculos.GetRowValues(intIndex, "VIN").ToString();
                txtMotor.Text = grdListadoVehiculos.GetRowValues(intIndex, "NRO_MOTOR") == null ? String.Empty : grdListadoVehiculos.GetRowValues(intIndex, "NRO_MOTOR").ToString();
                txtAnioFabricacion.Text = grdListadoVehiculos.GetRowValues(intIndex, "ANIO_FABRICACION") == null ? String.Empty : grdListadoVehiculos.GetRowValues(intIndex, "ANIO_FABRICACION").ToString();
                pcCanibalizacion.ShowOnPageLoad = false;
            }
            catch (Exception ex)
            {

                GuardarExceptionLog(ex.Message, ex, "AgregaSeleccionMoto");
                MensajesError(ex.Message, ex, "AgregaSeleccionMoto");
            }


        }


        private void AgregarMaterialReponer()
        {



            try
            {

                int contador = grdCanibalizacionMovEntrada.Selection.Count;

                if (contador == 0)
                {
                    lblmsj.Text = "Seleccione un registro para agregar";
                    popupmsj.ShowOnPageLoad = true;
                    return;

                }



                if (ValidarDuplicados(grdCanibalizacionMovEntrada))
                {
                    lblmsj.Text = "El Material ya esta agregado por favor agregar otro ";
                    popupmsj.ShowOnPageLoad = true;
                    return;
                }



                for (int i = 0; i < grdCanibalizacionMovEntrada.VisibleRowCount; i++)
                {
                    Struct_T_LOG_CANIBALIZACION_MOV_DET canibalizacionMovDet = new Struct_T_LOG_CANIBALIZACION_MOV_DET();

                    if (grdCanibalizacionMovEntrada.Selection.IsRowSelected(i))
                    {

                        ASPxTextBox txtFob = (ASPxTextBox)grdCanibalizacionMovEntrada.FindRowCellTemplateControl(i, null, "txtfob_e");
                        ASPxTextBox txtcup_d = (ASPxTextBox)grdCanibalizacionMovEntrada.FindRowCellTemplateControl(i, null, "txtcup_d_e");
                        ASPxTextBox txtcup_s = (ASPxTextBox)grdCanibalizacionMovEntrada.FindRowCellTemplateControl(i, null, "txtcup_s_e");

                        canibalizacionMovDet.ID_MATERIAL = Convert.ToInt32(grdCanibalizacionMovEntrada.GetRowValues(i, "ID_MATERIAL"));
                        canibalizacionMovDet.COD_MATERIAL = grdCanibalizacionMovEntrada.GetRowValues(i, "COD_MATERIAL").ToString();
                        canibalizacionMovDet.DES_MATERIAL = grdCanibalizacionMovEntrada.GetRowValues(i, "DES_MATERIAL").ToString();
                        canibalizacionMovDet.CANT_STOCK = Convert.ToInt32(grdCanibalizacionMovEntrada.GetRowValues(i, "STOCK_ACTUAL"));
                        canibalizacionMovDet.CANT_TRANSITO = Convert.ToInt32(grdCanibalizacionMovEntrada.GetRowValues(i, "CANT_TRANSITO"));
                        canibalizacionMovDet.CANTIDAD = Convert.ToInt32(grdCanibalizacionMovEntrada.GetRowValues(i, "TOTAL_SALDO"));
                        canibalizacionMovDet.CUP_D = Convert.ToDecimal(txtcup_d.Text);
                        canibalizacionMovDet.CUP_S = Convert.ToDecimal(txtcup_s.Text);
                        canibalizacionMovDet.FOB = Convert.ToDecimal(txtFob.Text);
                        canibalizacionMovDet.OBSERVACION = "";
                        canibalizacionMovDet.ID_LOG_CANIB_MOV_CAB = 0;

                        listaCanibalizacionMovDet.Add(canibalizacionMovDet);
                    }
                }

                grdCanibalizacionMovDet.DataSource = listaCanibalizacionMovDet;
                grdCanibalizacionMovDet.DataBind();
                pcMaterialReponer.ShowOnPageLoad = false;


            }
            catch (Exception ex)
            {
                GuardarExceptionLog(ex.Message, ex, "AgregarMaterialReponer");
                MensajesError(ex.Message, ex, "AgregarMaterialReponer");
            }
        }


        private void GuardarExceptionLog(String msgUsu, Exception ex, String metError)
        {
            try
            {
                String msgReal, fhError, pagError, codUsu;
                msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
                codUsu = Session["User"].ToString();
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                int number = 0;
                for (int i = 0; i < trace.FrameCount; i++)
                {
                    System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                    number = sf.GetFileLineNumber();
                }
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                new Logg().ErrorLog(Server.MapPath("~/Logs/ErrorLog.csv"), msgUsu, msgReal, pagError, metError, codUsu, number);
            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "GuardarExceptionLog");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "GuardarExceptionLog");
            }

        }

        private void MensajesError(String msgUsu, Exception ex, String metError)
        {
            Crosland.Automotriz.Web.UserControl.MensajeError uc = (Crosland.Automotriz.Web.UserControl.MensajeError)Master.FindControl("ucErrorMensaje");
            String msgReal, fhError, pagError, codUsu;
            msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
            pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
            codUsu = Session["User"].ToString();
            fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
            int number = 0;
            for (int i = 0; i < trace.FrameCount; i++)
            {
                System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                number = sf.GetFileLineNumber();
            }
            uc.Errores(msgUsu, msgReal, fhError, pagError, metError, codUsu, number);
        }

        protected void btnMBuscar_Click1(object sender, EventArgs e)
        {
            this.ListaMaterialMovimientoSalida();
        }

        protected void grdMaterial_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.ListaMaterialMovimientoSalida();
        }

        protected void btnPopAgregar_Click(object sender, EventArgs e)
        {
            if (grdMaterial.FocusedRowIndex == -1)
            {
                lblmsj.Text = "Seleccione un registro para poder agregar";
                popupmsj.ShowOnPageLoad = true;
            }
            else
            {
                this.AgregarMateriales();
            }
        }

        protected void btnPopIngresoCantidad_Click(object sender, EventArgs e)
        {
            this.AgregarMateriales();
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            if (!Validar())
            {
                this.Grabar();
            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            this.ListarMotosCanibalizar();
        }

        protected void btnPopAceptar_Click(object sender, EventArgs e)
        {

            this.AgregaSeleccionMoto();

        }

        protected void grdCanibalizacionMovDet_RowCommand(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewRowCommandEventArgs e)
        {
            String id_material = e.CommandArgs.CommandArgument.ToString();
            if (e.CommandArgs.CommandName == "Quitar")
            {

                listaCanibalizacionMovDet.Remove(listaCanibalizacionMovDet.Where(x => x.ID_MATERIAL == int.Parse(id_material)).ToList()[0]);
                grdCanibalizacionMovDet.DataSource = listaCanibalizacionMovDet;
                grdCanibalizacionMovDet.DataBind();
            }


        }

        protected void grdListadoVehiculos_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.ListarMotosCanibalizar();
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Session["Operacion"] = null;
            Session["idCab"] = null;
            Response.Redirect("~/Canibalizacion/wFrmCanibalizacionMovimiento.aspx?id=" + intIdNegocio);
        }

        protected void txtComentarioArticulo_Init(object sender, EventArgs e)
        {
            ASPxMemo textBox = sender as ASPxMemo;
            GridViewDataItemTemplateContainer container = textBox.NamingContainer as GridViewDataItemTemplateContainer;
            textBox.JSProperties["cpHFKey"] = String.Format("{0}_{1}", container.Column.FieldName, container.KeyValue);
        }

        protected void ASPxTextBox1_Init(object sender, EventArgs e)
        {
            ASPxTextBox textBox = sender as ASPxTextBox;
            GridViewDataItemTemplateContainer container = textBox.NamingContainer as GridViewDataItemTemplateContainer;
            textBox.JSProperties["cpHFKey"] = String.Format("{0}_{1}", container.Column.FieldName, container.KeyValue);
        }

        protected void grdMaterial_HtmlRowPrepared(object sender, ASPxGridViewTableRowEventArgs e)
        {

            ASPxGridView grid = sender as ASPxGridView;
            if (e.RowType != GridViewRowType.Data)
                return;
            //fob
            decimal fob = Convert.ToDecimal(e.GetValue("FOB"));
            if (fob == Convert.ToDecimal(0.0))
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["FOB"] as GridViewDataColumn, "txtFob").Visible = true;
            }
            else
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["FOB"] as GridViewDataColumn, "lblFob").Visible = true;
            }


            //cup d

            decimal cup_d = Convert.ToDecimal(e.GetValue("CUP_D"));
            if (cup_d == Convert.ToDecimal(0.0))
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["CUP_D"] as GridViewDataColumn, "txtcup_d").Visible = true;
            }
            else
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["CUP_D"] as GridViewDataColumn, "lblcup_d").Visible = true;
            }

            //cup s



            decimal cup_s = Convert.ToDecimal(e.GetValue("CUP_S"));
            if (cup_s == Convert.ToDecimal(0.0))
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["CUP_S"] as GridViewDataColumn, "txtcup_s").Visible = true;
            }
            else
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["CUP_S"] as GridViewDataColumn, "lblcup_s").Visible = true;
            }


        }


        protected void btnBuscarMaterial_Click(object sender, EventArgs e)
        {

            if (lblIDLogCanibalizacionCab.Text == null || lblIDLogCanibalizacionCab.Text == String.Empty)
            {

                lblmsj.Text = "Seleccione Moto a Canibalizar";
                popupmsj.ShowOnPageLoad = true;
                return;
            }

            if (cboTipoMovimiento.Value != null)
            {

                int intIdTipoMovimiento = Convert.ToInt32(cboTipoMovimiento.Value);

                if (intIdTipoMovimiento == 151)
                { //Movimiento salida 

                    grdMaterial.DataSource = null;
                    grdMaterial.DataBind();
                    txtPopBuscar.Text = String.Empty;

                    pcMaterial.ShowOnPageLoad = true;
                    return;
                }
                else if (intIdTipoMovimiento == 150)
                {//Movimiento entrada 

                    this.ListaMaterialMovimientoEntrada();
                    pcMaterialReponer.ShowOnPageLoad = true;
                    return;

                }
            }
        }

        protected void btnPopAgregaMaterialMovEntrada_Click(object sender, EventArgs e)
        {
            this.AgregarMaterialReponer();
        }

        protected void grdCanibalizacionMovEntrada_HtmlRowPrepared(object sender, ASPxGridViewTableRowEventArgs e)
        {

            ASPxGridView grid = sender as ASPxGridView;
            if (e.RowType != GridViewRowType.Data)
                return;
            //fob
            decimal fob = Convert.ToDecimal(e.GetValue("FOB"));
            if (fob == Convert.ToDecimal(0.0))
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["FOB"] as GridViewDataColumn, "txtfob_e").Visible = true;
            }
            else
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["FOB"] as GridViewDataColumn, "lblfob_e").Visible = true;
            }


            //cup d

            decimal cup_d = Convert.ToDecimal(e.GetValue("CUP_D"));
            if (cup_d == Convert.ToDecimal(0.0))
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["CUP_D"] as GridViewDataColumn, "txtcup_d_e").Visible = true;
            }
            else
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["CUP_D"] as GridViewDataColumn, "lblcup_d_e").Visible = true;
            }

            //cup s



            decimal cup_s = Convert.ToDecimal(e.GetValue("CUP_S"));
            if (cup_s == Convert.ToDecimal(0.0))
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["CUP_S"] as GridViewDataColumn, "txtcup_s_e").Visible = true;
            }
            else
            {
                grid.FindRowCellTemplateControl(e.VisibleIndex, grid.Columns["CUP_S"] as GridViewDataColumn, "lblcup_s_e").Visible = true;
            }
        }


    }
}